#include "DetourNavMeshBuilder.h"
#ifdef __cplusplus
extern "C" {
#endif
void nav_dtNavMeshCreateParams_Delete(dtNavMeshCreateParams * c_this){
	if(c_this==0){
	    return;
	}
	delete c_this;
}

void nav_dtNavMeshCreateParams_DeleteArray(dtNavMeshCreateParams * c_this){
	if(c_this==0){
		return;
	}
	delete []c_this;
}

dtNavMeshCreateParams * nav_NewdtNavMeshCreateParams(){
	dtNavMeshCreateParams* wrap_out = new dtNavMeshCreateParams();
	return wrap_out;
}

float(*nav_dtNavMeshCreateParams_GetPtrToBmax(dtNavMeshCreateParams * c_this))[3]{
	return (float(*)[3])(&(c_this->bmax));
}

float(*nav_dtNavMeshCreateParams_GetPtrToBmin(dtNavMeshCreateParams * c_this))[3]{
	return (float(*)[3])(&(c_this->bmin));
}

bool * nav_dtNavMeshCreateParams_GetPtrToBuildBvTree(dtNavMeshCreateParams * c_this){
	return (bool *)(&(c_this->buildBvTree));
}

float * nav_dtNavMeshCreateParams_GetPtrToCh(dtNavMeshCreateParams * c_this){
	return (float *)(&(c_this->ch));
}

float * nav_dtNavMeshCreateParams_GetPtrToCs(dtNavMeshCreateParams * c_this){
	return (float *)(&(c_this->cs));
}

unsigned int const * * nav_dtNavMeshCreateParams_GetPtrToDetailMeshes(dtNavMeshCreateParams * c_this){
	return (unsigned int const * *)(&(c_this->detailMeshes));
}

int * nav_dtNavMeshCreateParams_GetPtrToDetailTriCount(dtNavMeshCreateParams * c_this){
	return (int *)(&(c_this->detailTriCount));
}

unsigned char const * * nav_dtNavMeshCreateParams_GetPtrToDetailTris(dtNavMeshCreateParams * c_this){
	return (unsigned char const * *)(&(c_this->detailTris));
}

float const * * nav_dtNavMeshCreateParams_GetPtrToDetailVerts(dtNavMeshCreateParams * c_this){
	return (float const * *)(&(c_this->detailVerts));
}

int * nav_dtNavMeshCreateParams_GetPtrToDetailVertsCount(dtNavMeshCreateParams * c_this){
	return (int *)(&(c_this->detailVertsCount));
}

int * nav_dtNavMeshCreateParams_GetPtrToNvp(dtNavMeshCreateParams * c_this){
	return (int *)(&(c_this->nvp));
}

unsigned char const * * nav_dtNavMeshCreateParams_GetPtrToOffMeshConAreas(dtNavMeshCreateParams * c_this){
	return (unsigned char const * *)(&(c_this->offMeshConAreas));
}

int * nav_dtNavMeshCreateParams_GetPtrToOffMeshConCount(dtNavMeshCreateParams * c_this){
	return (int *)(&(c_this->offMeshConCount));
}

unsigned char const * * nav_dtNavMeshCreateParams_GetPtrToOffMeshConDir(dtNavMeshCreateParams * c_this){
	return (unsigned char const * *)(&(c_this->offMeshConDir));
}

unsigned short const * * nav_dtNavMeshCreateParams_GetPtrToOffMeshConFlags(dtNavMeshCreateParams * c_this){
	return (unsigned short const * *)(&(c_this->offMeshConFlags));
}

float const * * nav_dtNavMeshCreateParams_GetPtrToOffMeshConRad(dtNavMeshCreateParams * c_this){
	return (float const * *)(&(c_this->offMeshConRad));
}

unsigned int const * * nav_dtNavMeshCreateParams_GetPtrToOffMeshConUserID(dtNavMeshCreateParams * c_this){
	return (unsigned int const * *)(&(c_this->offMeshConUserID));
}

float const * * nav_dtNavMeshCreateParams_GetPtrToOffMeshConVerts(dtNavMeshCreateParams * c_this){
	return (float const * *)(&(c_this->offMeshConVerts));
}

unsigned char const * * nav_dtNavMeshCreateParams_GetPtrToPolyAreas(dtNavMeshCreateParams * c_this){
	return (unsigned char const * *)(&(c_this->polyAreas));
}

int * nav_dtNavMeshCreateParams_GetPtrToPolyCount(dtNavMeshCreateParams * c_this){
	return (int *)(&(c_this->polyCount));
}

unsigned short const * * nav_dtNavMeshCreateParams_GetPtrToPolyFlags(dtNavMeshCreateParams * c_this){
	return (unsigned short const * *)(&(c_this->polyFlags));
}

unsigned short const * * nav_dtNavMeshCreateParams_GetPtrToPolys(dtNavMeshCreateParams * c_this){
	return (unsigned short const * *)(&(c_this->polys));
}

int * nav_dtNavMeshCreateParams_GetPtrToTileLayer(dtNavMeshCreateParams * c_this){
	return (int *)(&(c_this->tileLayer));
}

int * nav_dtNavMeshCreateParams_GetPtrToTileX(dtNavMeshCreateParams * c_this){
	return (int *)(&(c_this->tileX));
}

int * nav_dtNavMeshCreateParams_GetPtrToTileY(dtNavMeshCreateParams * c_this){
	return (int *)(&(c_this->tileY));
}

unsigned int * nav_dtNavMeshCreateParams_GetPtrToUserId(dtNavMeshCreateParams * c_this){
	return (unsigned int *)(&(c_this->userId));
}

int * nav_dtNavMeshCreateParams_GetPtrToVertCount(dtNavMeshCreateParams * c_this){
	return (int *)(&(c_this->vertCount));
}

unsigned short const * * nav_dtNavMeshCreateParams_GetPtrToVerts(dtNavMeshCreateParams * c_this){
	return (unsigned short const * *)(&(c_this->verts));
}

float * nav_dtNavMeshCreateParams_GetPtrToWalkableClimb(dtNavMeshCreateParams * c_this){
	return (float *)(&(c_this->walkableClimb));
}

float * nav_dtNavMeshCreateParams_GetPtrToWalkableHeight(dtNavMeshCreateParams * c_this){
	return (float *)(&(c_this->walkableHeight));
}

float * nav_dtNavMeshCreateParams_GetPtrToWalkableRadius(dtNavMeshCreateParams * c_this){
	return (float *)(&(c_this->walkableRadius));
}

dtNavMeshCreateParams * nav_dtNavMeshCreateParams_IndexArray(dtNavMeshCreateParams * c_this,long n){
	if(c_this==0){
		return 0;
	}
	c_this+=n;
	return c_this;
}

bool nav_dtCreateNavMeshData(dtNavMeshCreateParams * params,unsigned char * * outData,int * outDataSize){
	dtNavMeshCreateParams * c_arg_params=(dtNavMeshCreateParams *)(void*)(params);
	unsigned char * * c_arg_outData=(unsigned char * *)(void*)(outData);
	int * c_arg_outDataSize=(int *)(void*)(outDataSize);
	bool c_out = dtCreateNavMeshData(c_arg_params,c_arg_outData,c_arg_outDataSize);
	bool wrap_out  = (c_out);
	return wrap_out;
}

bool nav_dtNavMeshDataSwapEndian(unsigned char * data,int const dataSize){
	unsigned char * c_arg_data=(unsigned char *)(void*)(data);
	int const c_arg_dataSize=dataSize;
	bool c_out = dtNavMeshDataSwapEndian(c_arg_data,c_arg_dataSize);
	bool wrap_out  = (c_out);
	return wrap_out;
}

bool nav_dtNavMeshHeaderSwapEndian(unsigned char * data,int const dataSize){
	unsigned char * c_arg_data=(unsigned char *)(void*)(data);
	int const c_arg_dataSize=dataSize;
	bool c_out = dtNavMeshHeaderSwapEndian(c_arg_data,c_arg_dataSize);
	bool wrap_out  = (c_out);
	return wrap_out;
}

dtNavMeshCreateParams * nav_NewDtNavMeshCreateParamsPtrArray(long n){
	dtNavMeshCreateParams* c_this=new dtNavMeshCreateParams[n];
	return c_this;
}

#ifdef __cplusplus
}
#endif
